home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Interactive Media Design Review 1999
/
Interactive Media Design Review 1999.iso
/
pc
/
Demos
/
Herois
/
Codigo.Cst
/
00042_Script_AnimaFotosTrek
< prev
next >
Wrap
Text File
|
1999-03-19
|
5KB
|
156 lines
property spr
property memberPrim, memberUlt -- Cast members que serao animados
property memPrim, memQuantos -- Membros: em numero
property espera -- Tempo de espera entre cada mudanca (em ticks)
property aleatorio -- True para mudanca aleatoria
property ultimaTroca -- Hora em que foi feita ultima troca
property fotoAtual
property tempoAleatorio
property proxEspera
property delta
property prioridade
property trocaMetade, memMetade, quantosMetade, atualMetade
property memoria, limitado
on getBehaviorDescription
return "Anima sprites"
end
on getPropertyDescriptionList
set p_list = [ ¼
#memberPrim: [ #comment: "Primeiro membro da animacao", ¼
#format: #string, ¼
#default: "" ], ¼
#memberUlt: [ #comment: "Ultimo membro da animacao", ¼
#format: #string, ¼
#default: "" ], ¼
#espera: [ #comment: "Espera entre cada troca em 1/60s (velocidade)",¼
#format: #integer,¼
#default: 60 ],¼
#aleatorio: [ #comment: "Animacao randomica",¼
#format: #boolean,¼
#default: false ],¼
#tempoAleatorio: [ #comment: "Tempo de animacao randomica",¼
#format: #boolean,¼
#default: false ],¼
#delta: [ #comment: "Espera no inicio da animacao",¼
#format: #integer,¼
#default: 0 ],¼
#prioridade: [ #comment: "Prioridade da animacao (se anima em momentos criticos)",¼
#format: #integer,¼
#default: 0 ],¼
#memoria: [ #comment: "Memoria minima para animacao",¼
#format: #integer,¼
#default: 0 ]¼
]
return p_list
end
on beginSprite me
set spr = the spriteNum of me
inicializaAnima me
if prioridade < 0 then
set prioridade = 0
end if
set quantosMetade = 50
set memMetade = the number of member "TrekFotosT_prim"
set atualMetade = memMetade
set trocaMetade = true
puppetSprite spr + 1, true
end
on inicializaAnima me
set memPrim to the number of member memberPrim
set memQuantos to (the number of member memberUlt) - memPrim + 1
set proxEspera = random(espera)
global myMemSize
if myMemSize > memoria * 1024 * 1024 then
set limitado = false
else
puppetSprite spr, true
set limitado = true
set m = random(memQuantos) - 1 + memPrim
set the member of sprite spr to member m
end if
put 0 into fotoAtual
set ultimaTroca = 0
if delta > 0 then set the visibility of sprite spr to false
end
on cleanSprite me
puppetSprite (the spriteNum of me),false
puppetSPrite (spr + 1), false
set the visibility of sprite spr to true
set the visibility of sprite spr to true
end
on idleSprite me
if limitado then return
if not the visibility of sprite spr then return
global gMustUpdate
if ultimaTroca = 0 then set ultimaTroca = the timer
set tmp = the timer - ultimaTroca
if delta > 0 and tmp > delta then
set ultimaTroca = the timer
set the visibility of sprite spr to true
set delta = 0
set tmp = 0
end if
-- Testa se ja e' hora de trocar figura
if tempoAleatorio then
if tmp > proxEspera then
set tmp = true
set proxEspera = random(espera)
else
set tmp = false
end if
else
if trocaMetade and tmp > espera / 2 then
set trocaMetade = false
set atualMetade = atualMetade + 1
if atualMetade >= memMetade + quantosMetade then
set atualMetade = memMetade
end if
set the member of sprite (spr+1) to atualMetade
set gMustUpdate = true
end if
if tmp > espera then
set tmp = true
else
set tmp = false
end if
end if
-- Troca, se ja' for hora e se nao for em area critica
global gCritico
if tmp and prioridade >= gCritico then
-- Descobre qual a proxima figura a trocar
if (aleatorio) then
put random(memQuantos - 1) - 1 into tmp
if tmp >= fotoAtual then put 1 + tmp into tmp
put tmp into fotoAtual
else
put fotoAtual + 1 into fotoAtual
if fotoAtual >= memQuantos then put 0 into fotoAtual
end if
-- Muda figura e updateStage
set the member of sprite (the spriteNum of me) to memPrim + fotoAtual
set gMustUpdate to true
put the timer into ultimaTroca
set atualMetade = atualMetade + 1
if atualMetade >= memMetade + quantosMetade then
set atualMetade = memMetade
end if
set the member of sprite (spr+1) to atualMetade
set trocaMetade = true
end if
end